323 research outputs found

    Flexible Invariants Through Semantic Collaboration

    Full text link
    Modular reasoning about class invariants is challenging in the presence of dependencies among collaborating objects that need to maintain global consistency. This paper presents semantic collaboration: a novel methodology to specify and reason about class invariants of sequential object-oriented programs, which models dependencies between collaborating objects by semantic means. Combined with a simple ownership mechanism and useful default schemes, semantic collaboration achieves the flexibility necessary to reason about complicated inter-object dependencies but requires limited annotation burden when applied to standard specification patterns. The methodology is implemented in AutoProof, our program verifier for the Eiffel programming language (but it is applicable to any language supporting some form of representation invariants). An evaluation on several challenge problems proposed in the literature demonstrates that it can handle a variety of idiomatic collaboration patterns, and is more widely applicable than the existing invariant methodologies.Comment: 22 page

    SAVCBS 2004 Specification and Verification of Component-Based Systems: Workshop Proceedings

    Get PDF
    This is the proceedings of the 2004 SAVCBS workshop. The workshop is concerned with how formal (i.e., mathematical) techniques can be or should be used to establish a suitable foundation for the specification and verification of component-based systems. Component-based systems are a growing concern for the software engineering community. Specification and reasoning techniques are urgently needed to permit composition of systems from components. Component-based specification and verification is also vital for scaling advanced verification techniques such as extended static analysis and model checking to the size of real systems. The workshop considers formalization of both functional and non-functional behavior, such as performance or reliability

    Social Justice Driven STEM Learning (STEMJ): A Curricular Framework for Teaching STEM in a Social Justice Driven, Urban, College Access Program.

    Get PDF
    This article presents the curricular framework for a social justice driven STEM curriculum (i.e., STEMJ) within an out-of-school time program for Boston Public high school students (i.e., College Bound) at Boston College. Starting with a discussion of the authors’ ideological positionality within critical social justice discourses, the authors share how Bronfenbrenner’s (1994) General Ecological Model provides a conceptual framework for operationalizing social justice inquiry with and through STEM. Positioning this curriculum within the College Bound program’s overall design gives readers a sense of how the program’s College and Career, Identity and Society, and STEMJ curriculums work in tandem to support the programs desired outcomes of students’ increased critical consciousness and college matriculation. Lessons learned and future directions are also included in acknowledgement of the necessity of ongoing reflection and adaptation to fulfill the program’s ambitious goals

    Building a High-Performance Collective Communication Library

    Get PDF
    We report on a project to develop a unified approach for building a library of collective communication operations that performs well on a cross-section of problems encountered in real applications. The target architecture is a two-dimensional mesh with worm-hole routing, but the techniques are more general. The approach differs from traditional library implementations in that we address the need for implementations that perform well for various sized vectors and grid dimensions, including non-power-of-two grids. We show how a general approach to hybrid algorithms yields performance across the entire range of vector lengths. Moreover, many scalable implementations of application libraries require collective communication within groups of nodes. Our approach yields the same kind of performance for group collective communication. Results from the Intel Paragon system are included

    Feeling alone among 317 million others:Disclosures of loneliness on Twitter

    Get PDF
    Increasing numbers of individuals describe themselves as feeling lonely, regardless of age, gender or geographic location. This article investigates how social media users self-disclose feelings of loneliness, and how they seek and provide support to each other. Motivated by related studies in this area, a dataset of 22,477 Twitter posts sent over a one-week period was analyzed using both qualitative and quantitative methods. Through a thematic analysis, we demonstrate that self-disclosure of perceived loneliness takes a variety of forms, from simple statements of “I’m lonely”, through to detailed self-reflections of the underlying causes of loneliness. The analysis also reveals forms of online support provided to those who are feeling lonely. Further, we conducted a quantitative linguistic content analysis of the dataset which revealed patterns in the data, including that ‘lonely’ tweets were significantly more negative than those in a control sample, with levels of negativity fluctuating throughout the week and posts sent at night being more negative than those sent in the daytime

    Building a high-performance collective communication library

    Get PDF

    Get Me Here: Using Verification Tools to Answer Developer Questions

    Get PDF
    ABSTRACT While working developers often struggle to answer reachability questions (e.g. How can execution reach this line of code? How can execution get into this state?), the research community has created analysis and verification technologies whose purpose is systematic exploration of program execution. In this paper, we show the feasibility of using verification tools to create a query engine that automatically answers certain kinds of reachability questions. For a simple query, a developer invokes the "Get Me Here" command on a line of code. Our tool uses an SMT-based static analysis to search for an execution that reaches that line of code. If the line is reachable, the tool visualizes the trace using a Code Bubbles representation to show the methods invoked, the lines executed within the methods and the values of variables. The Get Me Here tool also supports more complex queries where the user specifies a start point, intermediate points, and an end point, each of which can specify a predicate over the program's state at that point. We evaluate the tool on a set of three benchmark programs. We compare the performance of the tool with professional developers answering the same reachability questions. We conclude that the tool has sufficient accuracy, robustness and performance for future testing with professional users
    corecore